package com.py.credit.service;

import com.py.credit.entity.AuthorizeModel;
import com.py.credit.entity.AuthorizeRecord;
import com.py.framework.core.common.Page;

import java.util.HashMap;
import java.util.List;

/**
 * @author YaoS
 * @date 2019-05-13 14:00
 */
public interface AuthorizeModelService {

    /**
     * 功能描述:查询所有模型
     *
     * @return 申请结果
     * @author YaoS
     * @date 19/5/13 14:09
     */
    List findModelList();

    /**
     * 功能描述: 新增授权模型
     *
     * @param model 模型信息
     * @author YaoS
     * @date 19/5/13 14:12
     */
    void addAuthorizeModel(AuthorizeModel model);

    /**
     * 功能描述:分页查询modelList
     *
     * @param modelName     模型名称
     * @param authorizeName 授权名称
     * @param page          分页信息
     * @return 查询结果
     * @author YaoS
     * @date 19/5/15 17:43
     */
    List<AuthorizeModel> selectModelListForPage(String modelName, String authorizeName, Page page);

    /**
     * 功能描述:查询所有模型信息
     *
     * @param modelId 授权id
     * @return 查询结果
     * @author YaoS
     * @date 19/5/13 14:59
     */
    List<AuthorizeRecord> findModelBind(String modelId);

    /**
     * 功能描述: 根据id查看详情
     *
     * @param authorizeId 授权id
     * @return AuthorizeModel
     * @author YaoS
     * @date 19/5/16 13:56
     */
    AuthorizeModel selectModelDetail(String authorizeId);

    /**
     * 功能描述: 根据modelId查看详情
     *
     * @param modelId 授权id
     * @return AuthorizeModel
     * @author YaoS
     * @date 19/5/16 13:56
     */
    AuthorizeModel selectModel(String modelId);

    /**
     * 功能描述:更新授权模型信息
     *
     * @param model 模型
     * @author YaoS
     * @date 19/5/13 14:59
     */
    void updateAuthorizeModel(AuthorizeModel model);

    /**
     * 功能描述: 根据id删除模型
     *
     * @param modelId 模型id
     * @author YaoS
     * @date 19/5/14 17:07
     */
    void deleteAuthorizeModelById(Integer modelId);

    /**
     * 功能描述: 查询是否可以删除
     *
     * @param modelId 模型id
     * @return int 查询结果数
     * @author YaoS
     * @date 19/5/17 17:37
     */
    int selectCount(String modelId);

    /**
     * 功能描述: 删除模型绑定
     *
     * @param modelId 模型id
     * @author YaoS
     * @date 19/5/16 14:52
     */
    void deleteBind(String modelId);

    /**
     * 功能描述: 模型绑定
     *
     * @param modelId   模型id
     * @param recordIds 资源ids
     * @author YaoS
     * @date 19/5/16 14:52
     */
    void modelBind(String modelId, List<String> recordIds);

    /**
     * 功能描述: 查询是否可以跑分
     *
     * @param token   用户token
     * @param modelId modelId
     * @return 查询结果集
     * @author YaoS
     * @date 19/5/15 11:55
     */
    HashMap<String, Integer> selectAuthorize(String token, String modelId);

    /**
     * 同步机构授权中的已存在部门信息
     *
     * @param ids 部门ids
     * @author YaoS
     * @date 19/5/27 14:17
     */
    void run(List<String> ids);

}
